The small computer system interface (SCSI) is a specification (ANSI std. X3.131-1986) for a peripheral bus and command set. The SCSI interface defines a high performance, peripheral interface that distributes data among peripherals independently of a host computer. SCSI may include an multi-port bus that can accommodate either single or multiple host systems. The use of a multi-port bus generally permits multiple devices, such as disk drives to be coupled to a single SCSI bus. As an example, eight disk drives can be coupled to an eight-port SCSI bus. With the advent of different types of SCSI buses, such as wide and ultra-wide SCSI, even more devices may be coupled to a SCSI bus.
The SCSI bus has a plurality of conductors which utilize a plurality of signals, some of which are used for control and some of which are used for data. The data lines are bidirectional and transfer data, commands, status and message information. The control signals and bus phases used in accordance with the conductors determine when and in what direction the data is transferred.
EMC Corporation, assignee of the present invention, manufactures and sells the Symmetrix.RTM. family of Integrated Cached Disk Array (ICDA.RTM.) storage subsystems. Some models of the Symmetrix family of ICDA storage subsystems can have, for example, one-hundred and twenty-eight (128) different disk drives in a single storage subsystem. Since a SCSI bus is capable of handling multiple peripherals on a single bus, it is a useful way of connecting a host computer or host computers to the ICDA storage subsystem.
In an ICDA storage system connected to a host computer or computers, large amounts of information are regularly being transferred between the host computer(s) and the ICDA storage system. It is often desirable understand different aspects of the information being transferred between the host computer and the ICDA. For example, the host computer may issue a write command to the ICDA. The entire process of the write operation resulting from the write command is commonly called an I/O (input/output operation). The I/O will include the write command from the host computer, the data to actually be written to the ICDA, and a status update indicating that the write to the ICDA was successful. In the I/O just described, if the host computer is considered the initiator and the ICDA is considered the target, and the I/O is analyzed from the perspective of the host computer, the following sequence would hold. The write command would be considered a "message out," The data to be written to the ICDA would also be considered a "message out," and the status update returned to the host computer by the ICDA would be considered a "message in." Thus during the I/O the direction of the I/O changes once.
It should also be understood that the I/O occurs for a certain duration. If the beginning of the write command occurs at T.sub.1, and the completion of the status occurs at T.sub.2, the length of the I/O is T.sub.1 -T.sub.2.
In situations such as those explained, it is desirable to know for example, how many times the direction of the I/O changes, and when such changes occur. It is also useful to know how may of the commands are write commands versus read commands. Lastly, it is also useful to know the length of the I/Os. When this type of information is known it can be used for a variety of purposes, such as performance, modeling and benchmarking analysis, which will indicate how the performance of the ICDA. This type of information is obtained by capturing the information off of the SCSI bus.
Typically, prior art trace analyzers or engines are capable of capturing the data off of only one SCSI bus. For a variety of reasons, a single SCSI analyzer is not useful for capturing data off a plurality of SCSI buses. The amounts of data which have to be captured off a plurality of SCSI buses may be to much for a single device. For example, in what is known in the art as a "deep trace," data is captured for some predetermined time such as hours, days, weeks or months. Additionally, the connection between the host computer and the ICDA may have a number of SCSI buses. Therefore, in order to capture data for the system as a whole, a number of SCSI analyzers would be required.
Using a number of discrete SCSI analyzers may be able to capture the data, but the data may be not be useful. If, for example, the wish is to find out many write commands occurred a predetermined time period, use of different discrete SCSI analyzers may not be able to provide such information. Each SCSI analyzer would be capturing data off of a single SCSI bus according to its own clock, but if it is desired to look at performance of the ICDA as a unit during the predetermined time, there is not any way to ensure that all of the clocks on the different SCSI analyzers are in sync with one another. If the data collected is not collected by analyzers on a common clock, then when the data is analyzed, it will not be an accurate reflection of what occurred during the predetermined time period. Thus if one wants to know the how may write commands, over a multi-bus SCSI, took place during the predetermined time period, the different SCSI analyzers will not have a common clock. Therefore, the data collected by the different SCSI analyzers may not show how may write commands actually took place during the predetermined time period. The data collected by the different SCSI analyzers then cannot be analyzed together, as there is not any time consistency among the data. Any analysis that uses the data, such as modeling, benchmarking or performance would not be accurate. It would be useful therefore, to have a device capable of capturing data off a plurality of SCSI buses in a format which will allow all of the data captured off of the plurality of SCSI buses to be analyzed together.